home *** CD-ROM | disk | FTP | other *** search
/ CU Amiga Super CD-ROM 25 / CU Amiga Magazine's Super CD-ROM 25 (1998)(EMAP Images)(GB)(Track 1 of 2)[!][issue 1998-08].iso / CUCD / Programming / QuakeTools / src / util / minimalistic / qbspLIGHT.c < prev    next >
Encoding:
C/C++ Source or Header  |  1998-05-28  |  2.2 KB  |  87 lines

  1. #include "qtools.h"
  2.  
  3. struct memory bspStatic;
  4. struct memory *bspMem = &bspStatic;
  5.  
  6. /*
  7.  * ==================
  8.  * main
  9.  * 
  10.  * ==================
  11.  */
  12. int main(int argc, char **argv)
  13. {
  14.   int i;
  15.   char sourcename[NAMELEN_PATH];
  16.   char destname[NAMELEN_PATH];
  17.   int subdivide_size = 240;
  18.   char *mapBuf;
  19.  
  20.   memset(bspMem, 0, sizeof(struct memory));
  21.   if (!setjmp(eabort)) {
  22.     //
  23.     // check command line flags
  24.     //
  25.     for (i = 1; i < argc; i++) {
  26.       if (argv[i][0] != '-')
  27.         break;
  28.       else if (!strcmp(argv[i], "-watervis"))
  29.         bspMem->bspOptions |= QBSP_WATERVIS;
  30.       else if (!strcmp(argv[i], "-slimevis"))
  31.         bspMem->bspOptions |= QBSP_SLIMEVIS;
  32.       else if (!strcmp(argv[i], "-notjunc"))
  33.         bspMem->bspOptions |= QBSP_NOTJUNC;
  34.       else if (!strcmp(argv[i], "-nofill"))
  35.         bspMem->bspOptions |= QBSP_NOFILL;
  36.       else if (!strcmp(argv[i], "-noclip"))
  37.         bspMem->bspOptions |= QBSP_NOCLIP;
  38.       else if (!strcmp(argv[i], "-onlyents"))
  39.         bspMem->bspOptions |= QBSP_ONLYENTS;
  40.       else if (!strcmp(argv[i], "-usehulls"))
  41.         bspMem->bspOptions |= QBSP_USEHULLS;
  42.       else if (!strcmp(argv[i], "-hullnum")) {
  43.         hullnum = atoi(argv[i + 1]);
  44.         i++;
  45.       }
  46.       else if (!strcmp(argv[i], "-subdivide")) {
  47.         subdivide_size = atoi(argv[i + 1]);
  48.         i++;
  49.       }
  50.       else
  51.         Error("qbsp: Unknown option '%s'", argv[i]);
  52.     }
  53.  
  54.     if (i != argc - 2 && i != argc - 1)
  55.       Error("usage: qbsp [options] sourcefile [destfile]\noptions: -nojunc -nofill -draw -onlyents -verbose");
  56.  
  57.     //
  58.     // let forked processes change name for ps status
  59.     //
  60.     argv0 = argv[0];
  61.  
  62.     //
  63.     // create destination name if not specified
  64.     //
  65.     strcpy(sourcename, argv[i]);
  66.     ReplaceExt(sourcename, "map");
  67.  
  68.     if((mapBuf = (char *)GetVoid(sourcename))) {
  69.       BeginBSPFile(bspMem);
  70.       
  71.       if (LoadMapFile(bspMem, inData->rawdata) == TRUE) {
  72.     if (qbsp(bspMem, hullnum, subdivide, bspName) == FALSE)
  73.       eprintf("failed to calculate bsp-tree\n");
  74.     FinishBSPFile(bspMem, bspFile);
  75.       }
  76.       else
  77.         eprintf("failed to parse map\n");
  78.       
  79.       tfree(mapBuf);
  80.     }
  81.     else
  82.       eprintf("failed to load mapfile %s\n", sourcename);
  83.   }
  84.  
  85.   return 0;
  86. }
  87.